package lambdasinaction.chap3.function;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.function.Function;

public class FunctionTest {


    public static void main(String ...args){
        List<String> list = Arrays.asList("asghhh", "wxrvt", "ploun", "qmozx");
        List<Integer> map = map(list, String::length);
        System.out.println(map);
    }


    /**
     * JDK自带的  直接使用即可   也可以自定义特殊的function
     */
//
//    @FunctionalInterface
//    public interface Function<T,R>{
//        R apply(T t);
//    }




    /**
     * 将 T 类型参数   转换为   R类型
     * @param t
     * @param f
     * @return
     * @param <T>
     * @param <R>
     */
    public static <T,R>  List<R> map(List<T> list , Function<T,R> f){
        List<R> result = new ArrayList<>();
        for(T t : list){
            R r = f.apply(t);
            result.add(r);
        }
        return result;
    }



}
